OPEN

#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <io.h>    требуется только для объявления функций.
int open(pathname, oflag [[, pmode]]);
char *pathname;    path-имя файла
int oflag;     доступный тип операций
int pmode;     разрешенный тип доступа.

Описание.
Функция open открывает файл, определяемый по path -имени, и подготавливает его к последующему чтению или записи, что определяется посредством oflag.
Аргумент oflag является целым выражением, состоящим из комбинации одной или более манифестных констант, объявленных в <fcntl.h>. Если задана больше чем одна константа, тогда они объединяются при помощи логического оператора ИЛИ (:).

    OFLAG          ЗНАЧЕНИЕ
          
    O_APPEND    Указатель  на файл  перемещен  в конец
          файла перед каждой операцией записи.
          
    O_CREAT   Новый файл создан и открыт для записи;
          это  не  эффективно,  если  существует
          файл, определяемый по path-имени.
          
    O_EXCL    Возвращается  значение ошибки,  если
          существует файл, определяемый по path-
          имени.  Применяется  только  вместе  с
          O_CREATE.

    O_RDONLY    Файл  открыт  только  для чтения; если
          задается этот флаг, может быть  выбран
          либо флаг O_RDWR, либо O_WRONLY.
          
    O_RDWR    Файл открыт  одновременно для чтения
          и записи;  если  задается  этот  флаг,
          может быть выбран  либо флаг O_RDONLY,
          либо O_WRONLY.
          
    O_TRUNC   Существующий файл  открыт и  усечен  к
          длине  0; этот  файл  должен иметь
          разрешение на запись. Содержимое файла
          уничтожается.
          
    O_WRONLY    Файл  открыт  только  для чтения; если
          задан этот  флаг,  должен  быть  задан
          также либо флаг O_RDONLY, либо ORDWR.
          
    O_BINARY    Файл  открыт  в  двоичном (не трансли-
          рованном) режиме.  (См. описание  дво-
          ичного режима у функции fopen).
          
    O_TEXT    Файл  открыт  в  текстовом (трансли-
          рующем) режиме. (См. описание  тексто-
          вого режима у функции fopen).
          

Замечание!
O_TRUNC полностью уничтожает содержимое существующего файла; поэтому нужно внимательно использовать эту константу.
Аргумент pmode требуется только тогда, когда определена константа O_CREAT . Если файл существует, pmode игнорируется. В противном случае pmode определяет разрешенные типы доступа для файла, которые устанавливаются во время первого закрытия нового файла.
Pmode целое выражение, содержащее одну или обе манифестные константы S_IREAD , S_IWRITE , объявленные в <sys\stat.h>. Когда заданы обе константы, они объединяются логическим оператором ИЛИ (:). Значение аргумента pmode приводится ниже.

    
    КОНСТАНТА    ЕЕ СМЫСЛОВОЕ ЗНАЧЕНИЕ
    
    S_IWRITE     разрешает запись.
    
    S_IREAD      разрешает чтение.

    S_IREAD|S_IWRITE   разрешают чтение и запись.

Если запись не разрешена, файл предназначен только для чтения. В MS DOS все файлы открыты для чтения; для них не возможно задать разрешение только на запись. Поэтому, модели S_IWRITE и S_IREAD: S_IWRITE являются эквивалентными.
Функция open перед установкой разрешенного доступа прикладывает текущую маску файла к pmode . (Подробно об этом описывается у функции umask ).

Возвращаемое значение.
Эта функция возвращает handle на созданный файл. Возвращаемое значение -1 указывает на ошибку; errno устанавливается в одно из следующих значений.

    
    ЗНАЧЕНИЕ      ЕГО СМЫСЛ
  
    EACCES   Заданное path-имя является директорием;
         или сделана попытка  записать  в  файл,
         открытый только для чтения, или
         возникло  sharing-нарушение.  (Sharing-
         режим файла для операций не допускается.
         Версии MS DOS 3.0 и старше).
    
    EEXIST   Флаги O_CREAT и O_EXCL  определены,  но
         названный файл всегда существует.
         
    EMFILE   Другие handle-ры файла не доступны, т.к.
         много открытых файлов.
          
    ENOENT   Файл или path-имя не найдено.
  

Пример:

    
    #include <fcntl.h>
    #include <sys\types.h>
    #include <sys\stat.h>
    #include <io.h>
    #include <stdlib.h>
    main ()
     {
      int fh1, fh2;
      fh1 = open("data1", O_RDONLY);
      if (fh1 == -1)
      perror("open failed on input file");
      fh2 = open("data2", O_WRONLY:O_TRUNC:O_CREAT,
            S_IREAD:S_IWRITE);
      if (fh2 == -1)
      perror("open failed on output file");
      .
      .
      .
     }.
      fh1 = open("data1", O_RDONLY);
      if (fh1 == -1)
      perror("open failed on input file");.
  
  
Hosted by uCoz